/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekamananggarankegiatanunit;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.sadhar.errhandler.ClassAntiNull;
import org.sadhar.sia.common.ClassConnection;
import org.sadhar.sipp.posbiaya.PosBiaya;
import org.springframework.jdbc.core.RowMapper;

/**
 *
 * @author hendro
 */
public class PerekamanAnggaranKegiatanUnitDAOImpl implements PerekamanAnggaranKegiatanUnitDAO {

    public PerekamanAnggaranKegiatanUnitDAOImpl() {
        ClassConnection.getTransactionProxyFactoryBean().setTarget(this);
    }

    public List<Status> getStatus(String tahunAnggaran, String kodeUnit) throws Exception {
        String sql = "SELECT anggaranKeg.tahun,isRevisi,isSudahDiajukan FROM " +
                "ppmk.anggaranBiayaRapatKerjaDanKegiatan AS anggaranKeg LEFT JOIN " +
                "ppmk.kegiatanUnit AS kegUnit ON anggaranKeg.kodeRapatKerjaSubKegiatan=kegUnit.kodeKegiatanUnit " +
                "WHERE isRapat='N' AND anggaranKeg.tahun=? AND kegUnit.kodeUnit=?";

        List<Status> list = new ArrayList<Status>();
        try {
            List<Map> rows = ClassConnection.getJdbc().queryForList(sql, new Object[]{
                        tahunAnggaran, kodeUnit
                    });
            for (Map m : rows) {
                Status s = new Status();
                s.setTahun(ClassAntiNull.AntiNullString(m.get("tahun")));
                s.setIsRevisi(ClassAntiNull.AntiNullString(m.get("isRevisi")));
                s.setIsDiajukan(ClassAntiNull.AntiNullString(m.get("isSudahDiajukan")));
                list.add(s);
            }
        } catch (Exception ex) {
        }
        return list;
    }

    public List<Status> getStatus2(String tahunAnggaran, String kodeUnit, String revisi, String aju) throws Exception {
        String sql = "SELECT anggaranKeg.tahun,isRevisi,isSudahDiajukan FROM " +
                "ppmk.anggaranBiayaRapatKerjaDanKegiatan AS anggaranKeg LEFT JOIN " +
                "ppmk.kegiatanUnit AS kegUnit ON anggaranKeg.kodeRapatKerjaSubKegiatan=kegUnit.kodeKegiatanUnit " +
                "WHERE isRapat='N' AND anggaranKeg.tahun=? AND kegUnit.kodeUnit=? and isRevisi = ? and isSudahDiajukan = ?";

        List<Status> list = new ArrayList<Status>();
        try {
            List<Map> rows = ClassConnection.getJdbc().queryForList(sql, new Object[]{
                        tahunAnggaran, kodeUnit, revisi, aju
                    });
            for (Map m : rows) {
                Status s = new Status();
                s.setTahun(ClassAntiNull.AntiNullString(m.get("tahun")));
                s.setIsRevisi(ClassAntiNull.AntiNullString(m.get("isRevisi")));
                s.setIsDiajukan(ClassAntiNull.AntiNullString(m.get("isSudahDiajukan")));
                list.add(s);
            }
        } catch (Exception ex) {
        }
        return list;
    }

    public double getTotalPlafon(String kodeUnit, String tahunAnggaran) throws Exception {
        String sql = "SELECT totalPlafon from ppmk.plafon WHERE " +
                "kodeUnit=? AND tahun=? AND kodeJenisAnggaran='2'";
        try {
            return (Double) ClassConnection.getJdbc().queryForObject(sql, new Object[]{kodeUnit, tahunAnggaran}, Double.class);
        } catch (Exception ex) {
            return 0;
        }
    }

    private int getHari(String kodeUnit, String tahunAnggaran, String isRevisi, String isDiajukan) throws Exception {
        String sql = "SELECT SUM(jumlahHari) FROM " +
                "ppmk.anggaranBiayaRapatKerjaDanKegiatan AS anggaranKeg LEFT JOIN " +
                "ppmk.kegiatanUnit AS kegUnit ON anggaranKeg.kodeRapatKerjaSubKegiatan= kegUnit.kodeKegiatanUnit " +
                "WHERE isRapat='N' and anggaranKeg.tahun=? AND kegUnit.kodeUnit=? AND " +
                "isRevisi=? and isSudahDiajukan=?";
        try {
            return ClassAntiNull.AntiNullInt(ClassConnection.getJdbc().queryForInt(sql,
                    new Object[]{
                        tahunAnggaran, kodeUnit, isRevisi, isDiajukan
                    }));
        } catch (Exception ex) {
            return 0;
        }
    }

    public double getTotalAnggaranKegiatan(String kodeUnit, String tahunAnggaran, String isRevisi, String isDiajukan) throws Exception {
        String sql = "";
        if (getHari(kodeUnit, tahunAnggaran, isRevisi, isDiajukan) > 0) {
            sql = "SELECT SUM(harga*kuantitas*jumlahHari) AS totalAnggaranKegiatan FROM " +
                    "ppmk.anggaranBiayaRapatKerjaDanKegiatan AS anggaranKeg LEFT JOIN " +
                    "ppmk.kegiatanUnit AS kegUnit ON anggaranKeg.kodeRapatKerjaSubKegiatan= kegUnit.kodeKegiatanUnit " +
                    "WHERE isRapat='N' and anggaranKeg.tahun=? AND kegUnit.kodeUnit=? AND " +
                    "isRevisi=? and isSudahDiajukan=?";
        } else {
            sql = "SELECT SUM(harga*kuantitas) AS totalAnggaranKegiatan FROM " +
                    "ppmk.anggaranBiayaRapatKerjaDanKegiatan AS anggaranKeg LEFT JOIN " +
                    "ppmk.kegiatanUnit AS kegUnit ON anggaranKeg.kodeRapatKerjaSubKegiatan= kegUnit.kodeKegiatanUnit " +
                    "WHERE isRapat='N' and anggaranKeg.tahun=? AND kegUnit.kodeUnit=? AND " +
                    "isRevisi=? and isSudahDiajukan=?";
        }
        try {
            return ClassAntiNull.AntiNullDouble(ClassConnection.getJdbc().queryForObject(sql,
                    new Object[]{
                        tahunAnggaran, kodeUnit, isRevisi, isDiajukan
                    }, Double.class));
        } catch (Exception ex) {
            return 0;
        }
    }

    public List<Kegiatan> listKegiatan(String tahunAnggaran, String kodeUnit) throws Exception {
        String sql = "SELECT kegUnit.kodeKegiatanUnit, kegUnit.kodeKelompokKegiatan, kelompokKegiatan, namaSubKegiatan,keterangan, kegUnit.kodeJenisKegiatan, jenisKegiatan, noIndikatorKinerja " +
                "FROM ppmk.kegiatanUnit AS kegUnit LEFT JOIN ppmk.kelompokKegiatan AS " +
                "klpk ON kegUnit.kodeKelompokKegiatan=klpk.kodeKelompok LEFT JOIN ppmk.jenisKegiatan AS " +
                "jns ON kegUnit.kodeJenisKegiatan=jns.kodeJenisKegiatan " +
                "WHERE tahun=? AND kodeUnit=?";
        List<Kegiatan> list = new ArrayList<Kegiatan>();
        try {
            List<Map> rows = ClassConnection.getJdbc().queryForList(sql, new Object[]{
                        tahunAnggaran, kodeUnit
                    });
            for (Map m : rows) {
                Kegiatan k = new Kegiatan();
                k.setKodeKegiatanUnit(ClassAntiNull.AntiNullInt(m.get("kodeKegiatanUnit")));
                k.setKodeKelompokKegiatan(ClassAntiNull.AntiNullInt(m.get("kodeKelompokKegiatan")));
                k.setKelompokKegiatan(ClassAntiNull.AntiNullString(m.get("kelompokKegiatan")));
                k.setNamaSubKegiatan(ClassAntiNull.AntiNullString(m.get("namaSubKegiatan")));
                k.setKodeJenisKegiatan(Integer.valueOf(m.get("kodeJenisKegiatan").toString()));
                k.setJenisKegiatan(ClassAntiNull.AntiNullString(m.get("jenisKegiatan")));
                k.setNoIndikator(ClassAntiNull.AntiNullString(m.get("noIndikatorKinerja")));
                k.setKeterangan(ClassAntiNull.AntiNullString(m.get("keterangan")));
                list.add(k);
            }
        } catch (Exception ex) {
        }
        return list;
    }

    public List<PosBiaya> listPosBiaya(int kodeKelompokKegiatan, String tahunAnggaran, String keySearch) throws Exception {
        String sql1 = "SELECT kodePosBiaya FROM ppmk.kelompokRKA WHERE " +
                "kodeKelompokKegiatan=?";
        String sql2 = "SELECT tahunKelompok FROM ppmk.kelompokAnggaranYangDigunakan WHERE " +
                "tahunAnggaran=?";
        String sql3 = "SELECT kodeKelompokBiaya FROM ppmk.kelompokBiaya WHERE tahunKelompok=? AND kodePosBiaya=?";
        String sql4 = "SELECT sub.kodePosBiaya,namaPosBiaya FROM ppmk.subkelompokAnggaranBiaya AS sub LEFT JOIN " +
                "ppmk.posBiaya AS pos ON sub.kodePosBiaya=pos.kodePosBiaya WHERE " +
                "kodeKelompokBiaya=? AND namaPosBiaya LIKE ?";
        try {
            int kodePosBiaya = ClassAntiNull.AntiNullInt(ClassConnection.getJdbc().queryForObject(sql1, new Object[]{kodeKelompokKegiatan}, Integer.class));
            String tahunKelompokBiaya = ClassAntiNull.AntiNullString(ClassConnection.getJdbc().queryForObject(sql2, new Object[]{tahunAnggaran}, String.class));
            int kodeKelompokBiaya = ClassAntiNull.AntiNullInt(ClassConnection.getJdbc().queryForObject(sql3, new Object[]{tahunKelompokBiaya, kodePosBiaya}, Integer.class));
            List<Map> rows = ClassConnection.getJdbc().queryForList(sql4, new Object[]{
                        kodeKelompokBiaya,
                        "%" + keySearch + "%"
                    });
            List<PosBiaya> list = new ArrayList<PosBiaya>();
            for (Map m : rows) {
                PosBiaya posBiaya = new PosBiaya();
                posBiaya.setKodePosBiaya(ClassAntiNull.AntiNullInt(m.get("kodePosBiaya")));
                posBiaya.setNamaPosBiaya(ClassAntiNull.AntiNullString(m.get("namaPosBiaya")));
                list.add(posBiaya);
            }
            return list;
        } catch (Exception ex) {
            return new ArrayList();
        }
    }

    public String selectNamaTableItem(int kodePosBiaya) throws Exception {
        String sql = "SELECT namaTabelItem FROM ppmk.posBiaya WHERE kodePosBiaya=?";
        try {
            return ClassAntiNull.AntiNullString(ClassConnection.getJdbc().queryForObject(sql, new Object[]{
                        kodePosBiaya
                    }, String.class));
        } catch (Exception ex) {
            return "";
        }
    }

    public ItemBiayaHargaItem selectHargaItem(String tahunAnggaran, int kodeItem) throws Exception {
        String sql = "SELECT namaItem,satuan,harga FROM ppmk.itemBiaya as item " +
                "LEFT JOIN ppmk.hargaItemBiaya AS hi ON item.kodeItem=hi.kodeItem " +
                "LEFT JOIN kamus.satuanBarang as sb ON item.kodeSatuan=sb.kodeSatuanBarang WHERE " +
                "hi.tahun=? AND item.kodeItem=?";
        try {
            return (ItemBiayaHargaItem) ClassConnection.getJdbc().queryForObject(sql, new Object[]{
                        tahunAnggaran, kodeItem
                    }, new RowMapper() {

                public Object mapRow(ResultSet rs, int arg1) throws SQLException {
                    ItemBiayaHargaItem item = new ItemBiayaHargaItem();
                    item.setNamaItem(rs.getString("namaItem"));
                    item.setSatuan(rs.getString("satuan"));
                    item.setHarga(rs.getDouble("harga"));
                    return item;
                }
            });
        } catch (Exception ex) {
            return null;
        }

    }

    public ItemBiayaBarang selectItemBiayaBarang(int idBarang) throws Exception {
        String sql = "SELECT namaBarang,satuan FROM asset.barang as item LEFT JOIN " +
                "kamus.satuanBarang AS sb ON item.kodeSatuanBarang=sb.kodeSatuanBarang WHERE " +
                "item.idBarang=?";
        try {
            return (ItemBiayaBarang) ClassConnection.getJdbc().queryForObject(sql, new Object[]{
                        idBarang
                    }, new RowMapper() {

                public Object mapRow(ResultSet rs, int arg1) throws SQLException {
                    ItemBiayaBarang brg = new ItemBiayaBarang();
                    brg.setNamaBarang(rs.getString("namaBarang"));
                    brg.setSatuan(rs.getString("satuan"));
                    return brg;
                }
            });
        } catch (Exception edx) {
            return null;
        }
    }

    public float selectHarga(String tahun, int idBarang) throws Exception {
        String sql = "SELECT hrg.idHargaBarang, hargaBeliSatuanPerKecil FROM asset.hargaBarang AS hrg " +
                "INNER JOIN ppmk.nilaiPatokanHarga AS nilaiHrg ON hrg.idHargaBarang=nilaiHrg.idHargaBarang " +
                "WHERE tahun=? AND hrg.idBarang=?";
        try {
            return (Float) ClassConnection.getJdbc().queryForObject(sql, new Object[]{
                        tahun,
                        idBarang
                    }, new RowMapper() {

                public Object mapRow(ResultSet rs, int arg1) throws SQLException {
                    return ClassAntiNull.AntiNullFloat(rs.getFloat("hargaBeliSatuanPerKecil"));
                }
            });
        } catch (Exception ex) {
            return 0;
        }

    }

    public List<Map> selectAnggaranBiayaRapatKerjaDanKegiatan(
            String tahun,
            int kodeRapatKerjaSubKegiatan,
            int kodePosBiaya,
            int kodeItemBiayaBarang,
            String isRevisi,
            String isRapat) throws Exception {

        String sql = "SELECT tahun,kodeRapatKerjaSubKegiatan,kodePosBiaya,kodeItemBiayaBarang,harga,kuantitas,jumlahHari,isRapat,id,isRevisi,isSudahDiajukan " +
                "FROM ppmk.anggaranBiayaRapatKerjaDanKegiatan WHERE tahun=? AND kodeRapatKerjaSubKegiatan=? AND kodePosBiaya=? " +
                "AND kodeItemBiayaBarang=? AND isRevisi=? AND isRapat=?";
        try {
            List<Map> rows = ClassConnection.getJdbc().queryForList(sql, new Object[]{
                        tahun,
                        kodeRapatKerjaSubKegiatan,
                        kodePosBiaya,
                        kodeItemBiayaBarang,
                        isRevisi,
                        isRapat
                    });
            return rows;
        } catch (Exception ex) {
            return new ArrayList();
        }
    }

    public void insert(AnggaranBiayaRapatKerjaDanKegiatan obj) throws Exception {
        String sql = "INSERT INTO ppmk.anggaranBiayaRapatKerjaDanKegiatan(tahun,kodeRapatKerjaSubKegiatan,kodePosBiaya,kodeItemBiayaBarang," +
                "harga,kuantitas,jumlahHari,isRapat,isRevisi,isSudahDiajukan) VALUES(?,?,?,?,?,?,?,?,?,?)";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    obj.getTahun(),
                    obj.getKodeRapatKerjaSubKegiatan(),
                    obj.getKodePosBiaya(),
                    obj.getKodeItemBiayaBarang(),
                    obj.getHarga(),
                    obj.getKuantitas(),
                    obj.getJumlahHari(),
                    obj.getIsRapat(),
                    obj.getIsRevisi(),
                    obj.getIsSudahDiajukan()
                });
    }

    public List<AnggaranBiayaRapatKerjaDanKegiatan> listAllAnggaranBiayaRapatKerjaDanKegiatan(int kodeRapatKerjaSubKegiatan, String isRevisi, String tahun) throws Exception {
        List<AnggaranBiayaRapatKerjaDanKegiatan> list = new ArrayList<AnggaranBiayaRapatKerjaDanKegiatan>();
        String sql = "SELECT tahun,kodeRapatKerjaSubKegiatan,kodePosBiaya,kodeItemBiayaBarang,harga,kuantitas,jumlahHari,isRapat,id,isRevisi,isSudahDiajukan " +
                "FROM ppmk.anggaranBiayaRapatKerjaDanKegiatan WHERE kodeRapatKerjaSubKegiatan=? AND isRevisi=? AND tahun=?";
        try {
            List<Map> rows = ClassConnection.getJdbc().queryForList(sql, new Object[]{
                        kodeRapatKerjaSubKegiatan,
                        isRevisi,
                        tahun
                    });
            for (Map m : rows) {
                AnggaranBiayaRapatKerjaDanKegiatan obj = new AnggaranBiayaRapatKerjaDanKegiatan();
                obj.setTahun(ClassAntiNull.AntiNullString(m.get("tahun")));
                obj.setKodeRapatKerjaSubKegiatan(ClassAntiNull.AntiNullInt(m.get("kodeRapatKerjaSubKegiatan")));
                obj.setKodePosBiaya(ClassAntiNull.AntiNullInt(m.get("kodePosBiaya")));
                obj.setKodeItemBiayaBarang(ClassAntiNull.AntiNullInt(m.get("kodeItemBiayaBarang")));
                obj.setHarga(ClassAntiNull.AntiNullFloat(m.get("harga")));
                obj.setKuantitas(ClassAntiNull.AntiNullFloat(m.get("kuantitas")));
                obj.setJumlahHari(ClassAntiNull.AntiNullFloat(m.get("jumlahHari")));
                obj.setIsRapat(ClassAntiNull.AntiNullString(m.get("isRapat")));
                obj.setId(ClassAntiNull.AntiNullInt(m.get("id")));
                obj.setIsRevisi(ClassAntiNull.AntiNullString(m.get("isRevisi")));
                obj.setIsSudahDiajukan(ClassAntiNull.AntiNullString(m.get("isSudahDiajukan")));
                list.add(obj);
            }
        } catch (Exception ex) {
        }
        return list;
    }

    public List<AnggaranBiayaRapatKerjaDanKegiatan> listAllAnggaranBiayaRapatKerjaDanKegiatan(String tahun, String kodeUnit, String isRevisi) throws Exception {
        List<AnggaranBiayaRapatKerjaDanKegiatan> list = new ArrayList<AnggaranBiayaRapatKerjaDanKegiatan>();
        String sql = "SELECT kelompokKegiatan.kelompokKegiatan" +
                ",kegiatanUnit.namaSubKegiatan" +
                ",anggaranBiayaRapatKerjaDanKegiatan.kodeRapatKerjaSubKegiatan" +
                ", anggaranBiayaRapatKerjaDanKegiatan.kodePosBiaya" +
                ", anggaranBiayaRapatKerjaDanKegiatan.kodeItemBiayaBarang" +
                ", anggaranBiayaRapatKerjaDanKegiatan.harga" +
                ", anggaranBiayaRapatKerjaDanKegiatan.kuantitas" +
                ", anggaranBiayaRapatKerjaDanKegiatan.jumlahHari" +
                ", anggaranBiayaRapatKerjaDanKegiatan.isRapat" +
                ", anggaranBiayaRapatKerjaDanKegiatan.id" +
                ", anggaranBiayaRapatKerjaDanKegiatan.isRevisi" +
                ", anggaranBiayaRapatKerjaDanKegiatan.isSudahDiajukan" +
                ", anggaranBiayaRapatKerjaDanKegiatan.tahun " +
                "FROM ppmk.kegiatanUnit INNER JOIN ppmk.anggaranBiayaRapatKerjaDanKegiatan " +
                "ON (kegiatanUnit.kodeKegiatanUnit = anggaranBiayaRapatKerjaDanKegiatan.kodeRapatKerjaSubKegiatan) " +
                "INNER JOIN ppmk.kelompokKegiatan ON (kelompokKegiatan.kodeKelompok = kegiatanUnit.kodeKelompokKegiatan) " +
                "WHERE (anggaranBiayaRapatKerjaDanKegiatan.tahun =? AND kegiatanUnit.kodeUnit =? AND anggaranBiayaRapatKerjaDanKegiatan.isRevisi=? AND anggaranBiayaRapatKerjaDanKegiatan.isRapat='N') " +
                "ORDER BY kegiatanUnit.namaSubKegiatan,anggaranBiayaRapatKerjaDanKegiatan.kodePosBiaya,anggaranBiayaRapatKerjaDanKegiatan.kodeItemBiayaBarang";
        try {
            List<Map> rows = ClassConnection.getJdbc().queryForList(sql, new Object[]{
                        tahun, kodeUnit, isRevisi
                    });
            for (Map m : rows) {
                AnggaranBiayaRapatKerjaDanKegiatan obj = new AnggaranBiayaRapatKerjaDanKegiatan();
                obj.setKelompokKegiatan(ClassAntiNull.AntiNullString(m.get("kelompokKegiatan")));
                obj.setNamaKegiatan(ClassAntiNull.AntiNullString(m.get("namaSubKegiatan")));
                obj.setTahun(ClassAntiNull.AntiNullString(m.get("tahun")));
                obj.setKodeRapatKerjaSubKegiatan(ClassAntiNull.AntiNullInt(m.get("kodeRapatKerjaSubKegiatan")));
                obj.setKodePosBiaya(ClassAntiNull.AntiNullInt(m.get("kodePosBiaya")));
                obj.setKodeItemBiayaBarang(ClassAntiNull.AntiNullInt(m.get("kodeItemBiayaBarang")));
                obj.setHarga(ClassAntiNull.AntiNullFloat(m.get("harga")));
                obj.setKuantitas(ClassAntiNull.AntiNullFloat(m.get("kuantitas")));
                obj.setJumlahHari(ClassAntiNull.AntiNullFloat(m.get("jumlahHari")));
                obj.setIsRapat(ClassAntiNull.AntiNullString(m.get("isRapat")));
                obj.setId(ClassAntiNull.AntiNullInt(m.get("id")));
                obj.setIsRevisi(ClassAntiNull.AntiNullString(m.get("isRevisi")));
                obj.setIsSudahDiajukan(ClassAntiNull.AntiNullString(m.get("isSudahDiajukan")));
                list.add(obj);
            }
        } catch (Exception ex) {
        }
        return list;
    }

    public void updateIsDiajukan(String tahun, String kodeUnit) throws Exception {
        String sql = "UPDATE ppmk.kegiatanUnit " +
                "INNER JOIN ppmk.anggaranBiayaRapatKerjaDanKegiatan  " +
                "ON (kegiatanUnit.kodeKegiatanUnit = anggaranBiayaRapatKerjaDanKegiatan.kodeRapatKerjaSubKegiatan)  " +
                "SET anggaranBiayaRapatKerjaDanKegiatan.isSudahDiajukan='Y' " +
                "WHERE (anggaranBiayaRapatKerjaDanKegiatan.tahun =? AND kegiatanUnit.kodeUnit =?)";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    tahun, kodeUnit
                });
    }

    public List<Map> listKunciAnggaranBiayas(String tahun, String kodeUnit, int kodeJenisAnggaran, String isRevisi) throws Exception {
        String sql = "SELECT * FROM ppmk.kunciAnggaranBiaya WHERE " +
                "tahunAnggaran=? AND " +
                "kodeUnit=? AND " +
                "kodeJenisAnggaran=? AND " +
                "isRevisi=?";
        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{
                        tahun,
                        kodeUnit,
                        kodeJenisAnggaran,
                        isRevisi
                    });
        } catch (Exception ex) {
            return new ArrayList();
        }
    }

    public String selectIsDikunci(String tahun, String kodeUnit, String isRevisi) throws Exception {
        String sql = "SELECT DISTINCT(isDikunci) FROM ppmk.kunciAnggaranBiaya WHERE " +
                "tahunAnggaran=? AND " +
                "kodeUnit=? AND " +
                "kodeJenisAnggaran=2 AND isRevisi=?";
        try {
            return (String) ClassAntiNull.AntiNullString(ClassConnection.getJdbc().queryForObject(sql, new Object[]{
                        tahun, kodeUnit, isRevisi
                    }, String.class));
        } catch (Exception ex) {
            return "";
        }
    }

    public void insertKunciAnggaranBiaya(String tahunAnggaran, String kodeUnit, String isRevisi) throws Exception {
        String sql = "INSERT INTO ppmk.kunciAnggaranBiaya(tahunAnggaran, kodeUnit, " +
                "kodeJenisAnggaran, isRevisi, isDikunci) VALUES(?,?,?,?,?)";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    tahunAnggaran,
                    kodeUnit,
                    2,
                    isRevisi,
                    "Y"
                });
    }

    public void updateKunciAnggaranBiaya(String tahunAnggaran, String kodeUnit, String isRevisi) throws Exception {
        String sql = "UPDATE ppmk.kunciAnggaranBiaya SET isDikunci='Y' " +
                "WHERE tahunAnggaran=? AND kodeUnit=? AND " +
                "kodeJenisAnggaran=2 AND isRevisi=?";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    tahunAnggaran,
                    kodeUnit,
                    isRevisi
                });
    }

    public void delete(AnggaranBiayaRapatKerjaDanKegiatan obj) throws Exception {
        String sql = "DELETE FROM ppmk.anggaranBiayaRapatKerjaDanKegiatan WHERE id=?";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    obj.getId()
                });
    }

    public void update(AnggaranBiayaRapatKerjaDanKegiatan obj) throws Exception {
        String sql = "UPDATE ppmk.anggaranBiayaRapatKerjaDanKegiatan SET tahun=?,kodeRapatKerjaSubKegiatan=?," +
                "kodePosBiaya=?,kodeItemBiayaBarang=?,harga=?,kuantitas=?,jumlahHari=?,isRapat=?,isRevisi=? " +
                "WHERE id=?";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    obj.getTahun(),
                    obj.getKodeRapatKerjaSubKegiatan(),
                    obj.getKodePosBiaya(),
                    obj.getKodeItemBiayaBarang(),
                    obj.getHarga(),
                    obj.getKuantitas(),
                    obj.getJumlahHari(),
                    obj.getIsRapat(),
                    obj.getIsRevisi(),
                    obj.getId()
                });

    }
}
